(function() {  
    var lastTime = 0;  
    var vendors = ['webkit', 'moz','o','ms'];  
    for(var x = 0; x < vendors.length && !window.requestAnimationFrame; ++x) {  
        window.requestAnimationFrame = window[vendors[x] + 'RequestAnimationFrame'];  
        window.cancelAnimationFrame = window[vendors[x] + 'CancelAnimationFrame'] ||     
            window[vendors[x] + 'CancelRequestAnimationFrame'];  
    }  
    if (!window.requestAnimationFrame) {  
        window.requestAnimationFrame = function(callback, element) {  
            var currTime = new Date().getTime();  
            var timeToCall = Math.max(0, 16.7 - (currTime - lastTime));  
            var id = window.setTimeout(function() {  
                callback(currTime + timeToCall);  
            }, timeToCall);  
            lastTime = currTime + timeToCall;  
            return id;  
        };  
    }  
    if (!window.cancelAnimationFrame) {  
        window.cancelAnimationFrame = function(id) {  
            clearTimeout(id);  
        };  
    }  
}()); 